package org.darkforest.admin.controller;

import org.darkforest.common.services.StoreClassService;
import org.darkforest.common.services.StoreService;
import org.darkforest.model.Store;
import org.darkforest.model.StoreClass;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

/**
 * 店铺分类管理
 * Created by Administrator on 2015/12/16.
 */
@RequestMapping(value = "store")
@Controller
public class StoreClassController {

    @Autowired
    private StoreClassService storeClassService;

    @Autowired
    private StoreService storeService;


    /**
     * 店铺分类列表
     * @param start
     * @return
     */
    @RequestMapping(value = "storeClassList")
    public ModelAndView list(@RequestParam(required = false, defaultValue = "1") int start){
        StoreClass storeClass = new StoreClass();
        storeClass.setStart(start);
        storeClass.setPageSize(10);
        storeClass = storeClassService.selectListByPage(storeClass);
        ModelAndView res  = new ModelAndView("store/class/store_class_list");
        res.addObject("page",storeClass);
        return  res;
    }

    /**
     * 页面直接修改店铺分类名称以及排序
     * @param scColumn
     * @param scValue
     * @param scId
     * @return
     */
    @RequestMapping(value = "simpleModifyStoreClass")
    public @ResponseBody String simpleModifyStoreClass(String scColumn,String scValue,Integer scId){
//        System.out.println("123");
        String result = "true";
        StoreClass sc  = new StoreClass();

        if("sc_name".equals(scColumn)){
            sc.setScName(scValue);
        }else{
            sc.setScSort(Integer.parseInt(scValue));
        }

       List<StoreClass> storeClasses =  storeClassService.selectListByCondition(sc);
        if(storeClasses.size()>0){
            result = "false";
        }else{
            sc.setScId(scId);
            storeClassService.updateByPrimaryKeySelective(sc);
            result="true";
        }
        return  result;
    }

    /**
     * 批量删除店铺分类
     * @param request
     * @return
     */
    @RequestMapping(value = "storeClassList/delStoreClassBatch")
    public ModelAndView delStoreClassBatch(HttpServletRequest request){
        String[] scIds = request.getParameterValues("scIds");
        ModelAndView modelAndView = new ModelAndView("msg");
        modelAndView.addObject("returnUrl", "store/storeClassList");
        for(String id:scIds){
            StoreClass storeClass = storeClassService.selectByPrimaryKey(Integer.valueOf(id));
            Store store = new Store();
            store.setScId(Integer.valueOf(id));
            List<Store> storeList = storeService.findStoreByCondition(store);
            if (storeList.size() > 0){
                modelAndView.addObject("msg", "删除失败，店铺分类（" + storeClass.getScName() + "）中存在店铺，不能删除");
                return modelAndView;
            }
        }
        int i = storeClassService.delStoreClassBatch(scIds);
        if (i == scIds.length) {
            modelAndView.addObject("msg", "店铺分类删除成功");
        } else {
            modelAndView.addObject("msg", "店铺分类删除失败");
        }
        return modelAndView;
    }

    /**
     * 跳转到新增店铺分类页面
     * @return
     */
    @RequestMapping(value = "storeClassList/toAddStoreClass")
    public ModelAndView toAddStoreClass(){
        ModelAndView res = new ModelAndView("store/class/add_store_class");
        return res;
    }

    /**
     * 新增时检查店铺分类名称是否已经重复
     * @param sc_name
     * @return
     */
    @RequestMapping(value = "storeClassList/checkStoreClassName")
    public @ResponseBody boolean checkStoreClassName(String sc_name){
        StoreClass sc = new StoreClass();
        sc.setScName(sc_name);

       List<StoreClass> storeClasses =  storeClassService.selectListByCondition(sc);
        if(storeClasses.size()>0){
            return false;
        }else{
            return true;
        }
    }

    /**
     * 新增店铺分类
     * @param storeClass
     * @return
     */
    @RequestMapping(value = "storeClassList/doAddStoreClass")
    public ModelAndView doAddStoreClass(@ModelAttribute("storeClass") StoreClass storeClass){
        int i = storeClassService.insertSelective(storeClass);
//        return "redirect: storeClassList";
        ModelAndView modelAndView = new ModelAndView("msg");
        if (i > 0) {
            modelAndView.addObject("msg", "店铺分类新增成功");
        } else {
            modelAndView.addObject("msg", "店铺分类新增失败");
        }
        modelAndView.addObject("returnUrl", "store/storeClassList");
        return modelAndView;
    }

    /**
     * 跳转到编辑店铺分类页面
     * @param scId
     * @return
     */
    @RequestMapping(value = "storeClassList/toModifyStoreClass")
    public ModelAndView toModifyStoreClass(Integer scId){
        ModelAndView res = new ModelAndView("store/class/modify_store_class");
        res.addObject("sc", storeClassService.selectByPrimaryKey(scId));
        return res;

    }

    /**
     * 编辑店铺分类
     * @param storeClass
     * @return
     */
    @RequestMapping(value = "storeClassList/doModifyStoreClass")
    public ModelAndView doModifyStoreClass(@ModelAttribute("storeClass") StoreClass storeClass){
        int i = storeClassService.updateByPrimaryKeySelective(storeClass);
//        return "redirect: storeClassList";
        ModelAndView modelAndView = new ModelAndView("msg");
        if (i > 0) {
            modelAndView.addObject("msg", "店铺分类编辑成功");
        } else {
            modelAndView.addObject("msg", "店铺分类编辑失败");
        }
        modelAndView.addObject("returnUrl", "store/storeClassList");
        return modelAndView;
    }

    @RequestMapping(value = "storeClassList/checkStoreNameExceptSelf")
    public @ResponseBody boolean checkStoreNameExceptSelf(String sc_name,Integer sc_id){

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("sc_name",sc_name);
        map.put("sc_id",sc_id);
        List<StoreClass> storeClasses =  storeClassService.checkStoreNameExceptSelf(map);
        if(storeClasses.size()>0){
            return false;
        }else{
            return true;
        }
    }

}
